class Solution {
public:
    int search(vector<int>& nums, int target) {


        //方法3 二分标准的方法
        if (nums.size() == 0)
        {
            return -1;
        }
{//二分核心代码
	// -1 0 3 5 9 12
	//2
	//left mid right
	//0     0   5
	//0     2   1
	//1     0   1
	//2     1   1  （2 <= 1 不成立 跳出while循环）
	//1               2
	int mid = 0;
	int left = 0;
	int right = nums.size() - 1;
	while(left <= right)
	{
		mid = left + (right - left) / 2; //这一步很关键，是计算中间值
		if (nums[mid] == target)
		{
			return mid;
		}
		else if(nums[mid] > target)
		{
			right = mid - 1;
		}
		else
		{
			left = mid + 1;//这一步一定要加，否则会出现判断重复，while循环跳不出去
		}
	}
	return -1;

}


    }
};